Динамические стратегии
Вы, вероятно, уже использовали один из шаблонов стратегии - поведенческий шаблон, который позволяет выбирать алгоритм во время выполнения.
Итак, вот такие входные данные у нас есть:
Которые будут сконвертированы в json
О, есть еще одно требование: нам нужно, чтобы эти стратегии были расширяемыми. Разработчикам должно быть позволено добавлять свои собственные стратегии для работы с другими типами входных данных: YAML, интерфейсами, итерируемыми объектами и всем, что им нужно.
Давайте взглянем на классическое решение и его проблемы.
Обычно мы начинаем с введения какого-то интерфейса, который должны реализовывать все стратегии:
Каждая стратегия должна определять, может ли она работать на заданных входных данных, и обеспечивать фактическую реализацию.
Далее мы можем предоставить несколько реализаций этого интерфейса:
